Actor RaDevil : TerminalArmorClass
{
Player.ScoreIcon "NEWYMUGS"
player.startitem "BaseFlagPack", 1
PainSound "weapon/mm4pain"
player.displayname "RaDevil"
player.soundclass "radevilc"
player.morphweapon "PerfectMachineBoss"
player.viewheight 105
projectilepassheight 150
player.forwardmove 0.75,0.75
player.sidemove 0.73,0.73
player.jumpz 10
renderstyle translucent
alpha 0.0
States
{
Spawn:
PLAY A 0 
NY3D B 1 A_JumpIf(z-floorz>0,"Jumping")
NY3D A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

See:
NY3D BBBBBBBB 1 A_JumpIf(z-floorz>0,"Jumping")
NY3D C 0 A_Quake(2,7,0,400)
NY3D C 0 A_PlaySound("misc/bigstomp","Auto",0.8)
NY3D CCCCCCCCDDDDDDDD 1 A_JumpIf(z-floorz>0,"Jumping")
NY3D E 0 A_Quake(2,7,0,400)
NY3D E 0 A_PlaySound("misc/bigstomp","Auto",0.8)
NY3D EEEEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1

Jumping:
NY3D I 1 A_JumpIf(z-floorz<=0,"Spawn")
wait

Missile:
NY3D F 0 A_JumpIfInventory("NYDCharge",70,"Missile3")
NY3D F 0 A_JumpIfInventory("NYDCharge",35,"Missile2")
Animation1:
NY3D FFFFF 1 A_JumpIf(z-floorz>0,"JumpingMissile1")
Goto Spawn+2
Animation2:
Missile2:
NY3D GGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Goto Spawn+2
Animation3:
Missile3:
NY3D JJJJJ 1 A_JumpIf(z-floorz>0,"JumpingMissile3")
Goto Spawn+2

JumpingMissile:
NY3D P 0 A_JumpIfInventory("NYDCharge",70,"JumpingMissile3")
NY3D P 0 A_JumpIfInventory("NYDCharge",35,"JumpingMissile2")
JumpingMissile1:
NY3D PPPPP 1 A_JumpIf(z-floorz<=0,"Missile")
Goto Jumping
JumpingMissile2:
NY3D QQQQQ 1 A_JumpIf(z-floorz<=0,"Missile2")
Goto Jumping
JumpingMissile3:
NY3D RRRRR 1 A_JumpIf(z-floorz<=0,"Missile3")
Goto Jumping

Animation4:
NY3D KKKKK 1 A_JumpIf(z-floorz>0,"JumpingA4")
Goto Spawn+2
Animation5:
NY3D LLLLL 1 A_JumpIf(z-floorz>0,"JumpingA5")
Goto Spawn+2
Animation6:
NY3D MMMMM 1 A_JumpIf(z-floorz>0,"JumpingA6")
Goto Spawn+2

JumpingA4:
NY3D SSSSS 1 A_JumpIf(z-floorz<=0,"Animation4")
Goto Spawn+2
JumpingA5:
NY3D TTTTT 1 A_JumpIf(z-floorz<=0,"Animation5")
Goto Spawn+2
JumpingA6:
NY3D UUUUU 1 A_JumpIf(z-floorz<=0,"Animation6")
Goto Spawn+2

Animation7:
NY3D N 1
loop

Animation8:
NY3D O 32
goto Spawn+2

Animation9:
NY3D VWX 2
NY3D [ 2

Animation10:
NY3D YZ 2
loop

Animation11:
NY3D [ 2
NY3D XWV 2
goto Spawn+2

Animation12:
NY3D FFKKKKKKKKKKKKKFFA 3
goto Spawn+2

ClassPain:
NY3D HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
WeaponGetM:
ClassDeath:
NOFX A 0 A_StopSound(CHAN_WEAPON)
NOFX A 0 A_SpawnItemEx("DeadRaDevil",0,0,0,0,0,0,0,1)
NOFX A 0 A_SpawnItemEx("FakeDeathFXSAR",0,0,90)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
}
}

actor NYDRaMoon// : BasicClientSide
{
+NOINTERACTION
+MISSILE
scale 2.5
reactiontime 15
States
{
Spawn:
RAMR A 35
RAMR BCF 2 A_Stop
TNT1 A 0 A_SpawnItemEx("NYDEyeFlash",0,0,43)
RAMR GHCBAAA 2 A_Stop
loopit:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death2")
TNT1 A 0 A_PlaySoundEx("weapon/rathorlaser","Body")
RAMR AAA 0 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
RAMR A 1 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
RAMR BBB 0 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
RAMR B 1 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
RAMR CCC 0 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
RAMR C 1 A_SpawnItemEx("NYDIntroFX2",0,0,16,random(0,17),0,-36,random(0,359))
TNT1 A 0 A_Countdown
loop
Death:
RAMR A 20
RAMR A 180 ThrustThingZ(0,20,0,0)
Death2:
TNT1 A 0
stop
}
}

Actor NYDIntroFX2// : BasicClientSide
{
PROJECTILE
Radius 26
Height 12
Obituary "$OB_RATHOR6"
DamageType "RaDevil"
damage (14)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn_L:
RADK AABBAABB 1 A_SpawnItemEx("RaThorDarkSubmissionTrail",0,0,0,0,0,0,0,1)
stop
}
}

actor NYDCapsule// : BasicClientSide
{
Obituary "$OB_RADEVIL6"
+MISSILE
+NOINTERACTION
//+BOUNCEONCEILINGS
//bouncefactor 0.0
scale 2.5
xscale 0.1
yscale 2.5
States
{
Spawn:
NYDC C 0
NYDC CCCCCCCCCCCCCCCCCCCCCCCC 1 A_SetScale(scalex+0.1,2.5)
NYDC AAAAAAAAAA 5 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death2")
TNT1 A 0 A_Quake(3,6,0,1000)
TNT1 AAAAAAAA 0 A_SpawnItemEx("NYDGlass",random(0,150),0,random(0,200),random(1,20),0,random(-5,18),random(0,359))
TNT1 AAAAAAAA 0 A_SpawnItemEx("DragonBurstFX",random(0,150),0,random(0,200),0,0,0,random(0,359))
TNT1 A 0 A_PlaySoundEx("misc/mm3explosion","Body")
TNT1 A 0 A_Explode(20,400,0,0,400)
NYDC B 2 A_PlaySoundEx("weapon/centaurflash","Weapon")
NYDC BBBBBBBBBBBB 5 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death2")
Death:
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("NYDGlass",random(0,150),0,random(0,200),random(10,50),0,random(-7,27),random(0,359))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("DragonBurstFX",random(0,150),0,random(0,200),0,0,0,random(0,359))
TNT1 A 0 A_PlaySoundEx("misc/mm3explosion","Body")
TNT1 A 0 A_PlaySoundEx("crystalman/break","Auto")
TNT1 A 2 A_PlaySoundEx("weapon/centaurflash","Weapon")
Death2:
TNT1 A 0
stop
}
}

actor NYDGlass : GlassShardFX
{
-CLIENTSIDEONLY
-THRUACTORS
damage (3)
DamageType "RaDevil"
bouncecount 5
Obituary "$OB_RADEVIL5"
States
{
Spawn:
SGSA ABCD 3
loop
Death:
SGSA EEEEEEEEEEEEEE 1 A_FadeOut(0.1)
stop
}
}

Actor DeadRaDevil : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
NY3D H 0 A_SpawnItemEx("NYDDeathExplode", 5, 0, 128) 
NY3D H 40
NY3D HHHH 25 A_SpawnItemEx("NYDDeathExplode", 5, random(-80,80), random(16, 120), 0, 0, 0, random(0,360)) 
NY3D HHHHHHHHHHH 5 A_SpawnItemEx("NYDDeathExplode", 5, random(-80,80), random(16, 120), 0, 0, 0, random(0,360)) 
NY3D HHHHHHHHHHHHHHHHHHHHHH 2 A_SpawnItemEx("NYDDeathExplode", 5, random(-80,80), random(16, 120), 0, 0, 0, random(0,360))
TNT1 A 0 A_PlaySOundEx("misc/devildeath", "Voice")
TNT1 A 2 A_SpawnItemEx("FakeDeathFX", 5, 0, 120)
stop
}
}

actor NYDDeathExplode
{
PROJECTILE
+NOINTERACTION
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("SARDeathFX1")
RAT2 A 0 A_Quake(5, 5, 0, 500)
TNT1 AAAAA 0 A_SpawnItemEx("NYDGoop", 0, 0, 0, frandom(2, 8), 0, frandom(10, 25), random(0, 360)) 
stop
}
}

actor NYDGoop : RaDevilGoop
{
PROJECTILE
+THRUACTORS
height 1
radius 1
xscale 0.5
yscale 0.5
-NOGRAVITY
states
{
Spawn:
RAT2 U 1 A_SetScale(scalex + frandom(0.01, 0.01), scaley + frandom(0.01, 0.01)) 
loop 
Death:
RAT2 UU 0 A_SpawnITemEX("RaDevilGoopPuddle2", frandom(0, 3), 0, random(0, 48), random(1, 3), 0, random(2, 5), random(0,360))
TNT1 A 2 A_PlaySoundEx("misc/piratebubble", "Body")
stop
}
}

Actor PerfectMachineBoss : VCBaseWeapon
{
Weapon.AmmoGive 28
Weapon.AmmoType "Base28Ammo"
Weapon.AmmoType2 "BaseAltfireAmmo"
Weapon.AmmoUse 4
Obituary "$OB_RADEVIL1"
+WEAPON.NOAUTOAIM
States
{
Ready:
TNT1 A 0
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_ChangeFlag("NOTELEFRAG",True)
TNT1 A 94 A_SpawnItemEx("NYDRaMoon",0,0,0,0,0,8)
TNT1 A 0 A_SpawnItemEx("NYDCapsule")
TNT1 A 25 A_PlaySoundEx("misc/meltinghands","Body")
TNT1 A 111 A_StopSound(CHAN_BODY)
TNT1 A 0 A_PlaySoundEx("misc/radevilroar","Auto")
TNT1 A 0 A_Quake(2,90,0,1000)
TNT1 A 0 A_Quake(5,60,0,1000)
TNT1 A 0 A_Quake(8,30,0,1000)
TNT1 A 0 A_GiveInventory("ShadowVisible")
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,12)
ReadyLoop:
SYDH E 1 Offset(2, 41)
SYDH E 1 Offset(-2, 39)
SYDH E 1 Offset(0, 36) A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",18,"ReadyFinish")
loop
ReadyFinish:
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 SetPlayerProperty(0,0,0)
SYDH EEDA 2 A_WeaponReady(WRF_NOFIRE)
SYDH A 27 A_GiveInventory("GravityRestore")
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
SYDH A 0 A_ChangeFlag("NOTELEFRAG",False)
TNT1 A 0 A_GunFlash

Ready2:
SYDH A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready2.TF")
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SYDH A 0 A_GiveInventory("Base28Ammo",1)
goto Ready2

Ready2.TF:
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SYDH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SYDH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SYDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,37)) SYDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SYDH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SYDH A 0 A_GiveInventory("Base28Ammo",1)
goto Ready2

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SYDH A 1 A_Lower
Loop

Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SYDH A 1 A_Raise
Loop


Fire:
SYDH D 2 A_PlaySoundEx("weapon/rathorcharge","Weapon",1)

Hold:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
TNT1 AAA 0 A_FireCustomMissile("NYDFXSpawner",random(-35,35),0,0,72,0,random(-30,30))
SYDH E 1 A_GiveInventory("NYDCharge",1)
SYDH E 0 A_Refire
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_JumpIfInventory("NYDCharge",70,"Fire2")

Firing:
TNT1 A 0 A_StopSound(CHAN_WEAPON)
TNT1 A 0 A_TakeInventory("Base28Ammo",4)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4)
SYDH E 0 A_FireCustomMissile("NYDShot",0,0,0,72)
TNT1 A 0 A_PlaySoundEx("misc/wilybeam","Weapon")
SYDH E 1 Offset(2, 41) A_GiveInventory("VCOnce")
SYDH E 1 Offset(-2, 39) A_TakeInventory("NYDCharge",1)
SYDH E 1 Offset(0, 36) A_TakeInventory("NYDCharge",1)
TNT1 A 0 A_JumpIfInventory("NYDCharge",2,"FiringLoop")
goto Fire.End

FiringLoop:
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4)
SYDH E 0 A_FireCustomMissile("NYDShot",frandom(-3,3),0,0,72,0,frandom(-1.5,1.5))
TNT1 A 0 A_PlaySoundEx("misc/wilybeam","Weapon")
SYDH E 1 Offset(2, 41)
SYDH E 1 Offset(-2, 39) A_TakeInventory("NYDCharge",1)
SYDH E 1 Offset(0, 36) A_TakeInventory("NYDCharge",1)
TNT1 A 0 A_JumpIfInventory("NYDCharge",2,"FiringLoop")

Fire.End:
TNT1 A 0 A_TakeInventory("VCOnce")
TNT1 A 0 A_ClearRefire
TNT1 A 0 A_TakeInventory("NYDCharge",99)
SYDH EEEDA 2 A_WeaponReady(WRF_NOFIRE)
goto Ready2

Fire2:
TNT1 A 0 A_StopSound(CHAN_WEAPON)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,6)
TNT1 A 0 A_TakeInventory("Base28Ammo",4)
SYDH E 0 A_FireCustomMissile("NYDShot2",0,0,0,72)
SYDH I 1 Offset(4,30) A_PlaySoundEx("misc/wilylightning","Weapon")
SYDH I 1 Offset(1,33)
SYDH I 1 Offset(4,36)
SYDH I 1 Offset(2,31)
SYDH I 1 Offset(1,33) ACS_NamedExecute("VC_SetState",0,5)
SYDH I 1 Offset(2,32)
SYDH I 1 Offset(2,31)
SYDH I 1 Offset(1,33)
SYDH I 1 Offset(2,32) ACS_NamedExecute("VC_SetState",0,4)
SYDH I 1 Offset(2,31)
SYDH I 1 Offset(1,33)
SYDH I 1 Offset(2,32) A_ClearRefire
goto Fire.End


Altfire:
HAZH A 0 A_CheckFloor("Altfire.Floor")
TNT1 A 0 A_GiveInventory("DrillFlag",1) //To stop passive regen
TNT1 A 0 A_PlaySound("weapon/GutsmanToss","Weapon")
HAZH D 0 A_ChangeVelocity(50,0,12,CVF_RELATIVE|CVF_REPLACE)
SYDH F 2 ACS_NamedExecute("VC_SetState",0,7)
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)

AltfireFall:
SYDH F 0 A_SpawnItemEx("NYDSlam2",40)
SYDH F 0 ThrustThingZ(0,30,1,1)
SYDH F 1 A_CheckFloor("AltfireLand")
SYDH F 0 ACS_NamedExecute("VC_SetState",0,7)
loop

Altfire.Floor:
TNT1 A 0 A_PlaySound("weapon/GutsmanToss","Weapon")
HAZH D 0 A_ChangeVelocity(12,0,4,CVF_RELATIVE|CVF_REPLACE)
SYDH F 2 ACS_NamedExecute("VC_SetState",0,7)
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)

AltfireLand:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",37)
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
SYDH G 1 A_Stop
TNT1 A 0 A_Quake(4,35,0,400)
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,0,1)
SYDH F 0 ACS_NamedExecute("VC_SetState",0,8)
TNT1 A 0 A_PlaySoundEx("misc/hugequake","Weapon")
TNT1 A 0 A_SpawnItemEx("NYDSlam",40)
TNT1 A 0 A_SpawnItemEx("NYDShockwave",10,-80,0,16)
TNT1 A 0 A_SpawnItemEx("NYDShockwave",10,80,0,16)
SYDH H 1 Offset(4,30)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(4,36)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32) A_ClearRefire
SYDH HHHHA 4 A_WeaponReady(WRF_NOFIRE)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
TNT1 A 0 A_TakeInventory("DrillFlag",1) //To resume passive regen
SYDH A 3 SetPlayerProperty(0,0,0)
goto Ready2


User1:
SYDH F 0 ThrustThingZ(0,40,1,1)
SYDH F 1 A_CheckFloor("User1.Land")
loop

User1.Land:
TNT1 A 0 A_GiveInventory("DrillFlag",1) //To stop passive regen
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,9)
TNT1 A 0 A_PlaySoundEx("weapon/mercuryult","Auto")
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
TNT1 A 0 A_ChangeFlag("FLOORHUGGER",1)
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)
SYDH ABCXXXX 2 ACS_NamedExecuteAlways("VC_DragonSpeed",0,2)

User1.Wait:
TNT1 A 0 ThrustThingZ(0,400,1,0)
TNT1 A 1 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1.Finish")
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"User1.Wait")

User1.Finish:
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,11)
TNT1 A 0 A_PlaySoundEx("weapon/mercuryult","Auto")
SYDH CBA 2 A_Stop
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
TNT1 A 0 ACS_NamedExecuteAlways("VC_DragonSpeed",0,1)
DRIA A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
TNT1 A 0 A_ChangeFlag("FLOORHUGGER",0)
TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
TNT1 A 0 A_TakeInventory("DrillFlag",1) //To resume passive regen
goto Ready2


UltimateAttack:
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto") TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,140)
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True) TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_SpawnItemEx("TerminatorUltimateAlarm")
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("RaDevilRaMoonUlt",0,0,400)

UltLoop:
SYDH F 0 ACS_NamedExecute("VC_SetState",0,7)
TNT1 A 0 A_GiveInventory("PharaohUltCooldown")
TNT1 AAAAAA 0 A_FireCustomMissile("NYDFXSpawner2",random(0,359),0,0,random(0,72),0,random(-30,30))
TNT1 A 0 ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",100,"UltLoop2")
loop

UltLoop2:
TNT1 A 0 A_PlaySoundEx("misc/radevilroar","Auto")
TNT1 A 0 A_SpawnItemEx("NYDEyeFlash",10,0,111)

UltLoop2b:
SYDH F 0 ACS_NamedExecute("VC_SetState",0,7)
TNT1 A 0 A_GiveInventory("PharaohUltCooldown")
TNT1 A 0 A_Quake(2,4,0,200)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("NYDFXSpawner2",random(0,359),0,0,random(0,72),0,random(-30,30))
TNT1 A 0 ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-3,0) A_GiveInventory("CutterFlag",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile("NYDFXSpawner2",random(0,359),0,0,random(0,72),0,random(-30,30))
TNT1 A 0 ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(3,0) A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",120,"UltFinish")
loop

UltFinish:
DBRH M 0 A_PlaySoundEx("weapons/mmk/dawnbreakerwindup", "weapon")
SYDH F 1 Offset(-4,0) A_TakeInventory("CutterFlag",999)
SYDH F 1 Offset(4,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-4,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(4,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-5,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(5,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-5,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(5,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-6,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(6,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(-6,0) ACS_ExecuteAlways(247,0,7,3000)
SYDH F 1 Offset(6,0) A_GiveInventory("PharaohUltCooldown")
SYDH G 1 A_WeaponReady(WRF_NOFIRE)
SYDH F 0 ACS_NamedExecute("VC_SetState",0,8)
TNT1 A 0 A_Quake(2,105,0,1000)
TNT1 A 0 A_Quake(5,70,0,1000)
TNT1 A 0 A_Quake(8,35,0,1000)
TNT1 A 0 A_SpawnItemEx("NYDSlam3",40)
TNT1 A 0 A_TakeInventory("TerminationUltimateAmmo",9999)
DBRH T 0 A_PlaySoundEx("weapons/mmk/dawnbreakerwindup2", "weapon")
DBRH A 0 A_PlaySoundEx("weapons/mmk/dawnbreakerfire","Weapon")
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  0*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  1*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  2*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  3*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  4*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  5*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  6*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  7*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  8*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0,  9*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 10*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 11*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 12*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 13*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 14*360/16)
DBRH A 0 A_SpawnItemEx("MoonBreakerEmitter", 64, 0, -(z-floorz), 25, 25, 0, 15*360/16)
SYDH H 1 Offset(4,30)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(4,36)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32)
SYDH H 1 Offset(2,31)
SYDH H 1 Offset(1,33)
SYDH H 1 Offset(2,32) A_GiveInventory("PharaohUltCooldown")
SYDH H 20 A_WeaponReady(WRF_NOFIRE)
SYDH A 3 SetPlayerProperty(0,0,0)
SYDH A 0 A_TakeInventory("UltAttackFlag")
TNT1 A 0 A_GiveInventory("PharaohUltCooldown")
TNT1 A 0 ACS_ExecuteAlways(191,0,APROP_JumpZ,10,1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False) TNT1 A 0 A_TakeInventory("InvProtection",1)
goto Ready2


Flash:
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"Flash.Wait")
TNT1 A 3 A_GiveInventory("BaseAltfireAmmo",2)
loop

Flash.Wait:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"Flash.Wait")
goto Flash
}
}

Actor NYDCharge : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 70
+INVENTORY.IGNORESKILL
}

actor NYDFXSpawner
{
PROJECTILE
damage 0
height 1
radius 1
Speed 150
+SOLID
+DONTBLAST
+CLIENTSIDEONLY
+NOGRAVITY
+NOINTERACTION
scale 2.5
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_CustomMissile("NYDEnergyFX",0,0,0,0)
stop
}
}

actor NYDEnergyFX
{
+MISSILE
+NOINTERACTION
speed 40
scale 2.5
reactiontime 7
renderstyle add
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_SetScale(frandom(0.5,1.5))
loopit:
RDV1 K 1 A_JumpIfCloser(32,"Death")
RDV1 K 0 A_JumpIfInTargetInventory("VCOnce",1,"Death")
RDV1 K 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

Actor NYDShot
{
PROJECTILE
DamageType "RaDevil"
Obituary "$OB_RADEVIL1"
Radius 18
Height 18
Damage (10)
Speed 50
Scale 2.5
//+RIPPER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
Spawn_L:
RDV1 FGHI 1
Loop
Death:
RDV1 FGHIF 1 A_SetScale(ScaleX-0.2,ScaleY-0.2)
stop
}
}

actor NYDShockwave
{
PROJECTILE
+THRUACTORS
+FLOORHUGGER
radius 8
height 8
speed 30
states
{
Spawn:
TNT1 A 1 A_SpawnItemEx("NYDWaveRadius")
loop
}
}

actor NYDWaveRadius : BasicExplosion
{
PROJECTILE
Obituary "$OB_RADEVIL3"
damagetype "RaDevilWave"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(5, 48, 0, 0, 48)
TNT1 AAAAAAAAA 0 A_SpawnItemEx("RaThorDebris", random(0, 64), 0, 0, 0, 0, random(1, 15), random(0,359)) 
TNT1 A 1
stop
}
}

actor NYDSlam : NYDWaveRadius
{
PROJECTILE
Obituary "$OB_RADEVIL3"
damagetype "RaDevilSlam"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(78, 48, 0, 0, 48)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RaThorDebris", random(32, 48), 0, 0, random(15, 30), 0, random(10, 22), random(0,359)) 
TNT1 A 1
stop
}
}

Actor NYDShot2 : NYDShot
{
DamageType "RaDevil"
Obituary "$OB_RADEVIL2"
Radius 10
Height 10
scale 4.0
Damage (0)
Speed 3
+RIPPER
reactiontime 20
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/rathordarkmatter","Body",1)
Spawn_L:
TNT1 A 0 ACS_NamedExecuteAlways("core_radiuspull", 0, 6, 256)
RDV1 A 0 A_Quake(3,6,0,150)
RDV1 A 0 A_SpawnItemEx("NYDShot2Trail",0,0,0,random(-24,-6),random(-14,14),random(-14,14))
RDV1 A 1 A_Explode(2,84,0,0,84)
TNT1 A 0 ACS_NamedExecuteAlways("core_radiuspull", 0, 6, 256)
RDV1 B 0 A_Quake(3,6,0,150)
RDV1 B 0 A_SpawnItemEx("NYDShot2Trail",0,0,0,random(-24,-6),random(-14,14),random(-14,14))
RDV1 B 1 A_Explode(2,84,0,0,84)
TNT1 A 0 ACS_NamedExecuteAlways("core_radiuspull", 0, 6, 256)
RDV1 C 0 A_Quake(3,6,0,150)
RDV1 C 0 A_SpawnItemEx("NYDShot2Trail",0,0,0,random(-24,-6),random(-14,14),random(-14,14))
RDV1 C 1 A_Explode(2,84,0,0,84)
TNT1 A 0 ACS_NamedExecuteAlways("core_radiuspull", 0, 6, 256)
RDV1 D 0 A_Quake(3,6,0,150)
RDV1 D 0 A_SpawnItemEx("NYDShot2Trail",0,0,0,random(-24,-6),random(-14,14),random(-14,14))
RDV1 D 1 A_Explode(2,84,0,0,84)
TNT1 A 0 ACS_NamedExecuteAlways("core_radiuspull", 0, 6, 256)
RDV1 E 0 A_Quake(3,6,0,150)
RDV1 E 0 A_SpawnItemEx("NYDShot2Trail",0,0,0,random(-24,-6),random(-14,14),random(-14,14))
RDV1 E 1 A_Explode(2,84,0,0,84)
TNT1 A 0 A_Countdown
Loop
Death:
RDV1 D 0 A_PlaySoundEx("weapon/rathordarkexplode","Body")
RDV1 D 0 A_SpawnItemEx("NYDShot2Boom")
RDV1 DDDEEE 1 A_SetScale(ScaleX+0.4,ScaleY+0.4)
stop
}
}

actor NYDShot2Boom : NYDShot2
{
reactiontime 9
+THRUACTORS
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Quake(5,6,0,256)
TNT1 A 0 A_Explode(3,96,0,0,96)
TNT1 A 4 A_SpawnItemEx("SARDeathFX1",random(0,100),0,random(-50,50),0,0,0,random(0,359))
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 6
stop
}
}

actor NYDShot2Trail : RaThorDarkMatterTrail
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
loopit:
RDV1 A 1 A_Fadeout(0.05)
RDV1 A 0 A_SetScale(scaleX - 0.35, scaleY - 0.35)
RDV1 B 1 A_Fadeout(0.05)
RDV1 B 0 A_SetScale(scaleX - 0.35, scaleY - 0.35)
RDV1 C 1 A_Fadeout(0.05)
RDV1 C 0 A_SetScale(scaleX - 0.35, scaleY - 0.35)
RDV1 D 1 A_Fadeout(0.05)
RDV1 D 0 A_SetScale(scaleX - 0.35, scaleY - 0.35)
RDV1 E 1 A_Fadeout(0.05)
RDV1 E 0 A_SetScale(scaleX - 0.35, scaleY - 0.35)
loop
}
}

actor NYDSlam2 : NYDSlam
{
PROJECTILE
Obituary "$OB_RADEVIL3"
damagetype "RaDevilSlam"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(6, 48, 0, 0, 48)
TNT1 A 1
stop
}
}

actor NYDSlam3 : NYDSlam2
{
Obituary "$OB_RADEVIL4"
damagetype "RaDevil"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(1000, 128, 0, 0, 128)
TNT1 A 0 A_PlaySoundEx("weapons/mmk/dawnbreakerquake", "weapon")
TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RaThorDebris",0,0,0,random(16,40),0,random(8,42),random(0,359))
TNT1 A 1
stop
}
}

actor MoonBreakerEmitter : DawnBreakerEmitter
{
    Obituary "$OB_RADEVIL4"
	damagetype "RaDevil"
	translation "192:192=42:42", "198:198=44:44", "4:4=225:225"
    States
    {
    Spawn:
        DBR1 E 0
        DBR1 E 0 A_SetPitch(30)
        DBR1 E 0 A_SetArg(0, 216)
    Drag:
		DBR1 V 0 A_SetScale(0.5, 2.0)
        DBR1 V 1 A_SpawnItemEx("MoonBreakerFX1", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
		DBR1 U 0 A_SetScale(1.0, 2.0)
        DBR1 U 1 A_SpawnItemEx("MoonBreakerFX2", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
		DBR1 V 0 A_SetScale(1.5, 2.0)
        DBR1 V 1 A_SpawnItemEx("MoonBreakerFX3", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
		DBR1 U 0 A_SetScale(2.0, 2.0)
    DragLoop:
		TNT1 A 0 A_GiveToTarget("PharaohUltCooldown")
        DBR1 U 0 A_Explode(22, 24, 0, 0, 24)
        DBR1 U 0 A_SetAngle(angle+4)
        DBR1 U 0 A_ChangeVelocity(20, 0, 0, CVF_RELATIVE|CVF_REPLACE)
        DBR1 U 0 A_SetArg(0, args[0]-1)
        DBR1 U 0 A_JumpIf(args[0]<=0, "End")
        DBR1 U 1 A_SpawnItemEx("MoonBreakerFX4", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
        DBR1 U 0 A_Explode(22, 24, 0, 0, 24)
        DBR1 V 0 A_SetAngle(angle+4)
        DBR1 V 0 A_ChangeVelocity(20, 0, 0, CVF_RELATIVE|CVF_REPLACE)
        DBR1 V 0 A_SetArg(0, args[0]-1)
        DBR1 V 0 A_JumpIf(args[0]<=0, "End")
        DBR1 V 1 A_SpawnItemEx("MoonBreakerFX5", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
        loop
    End:
		DBR1 V 0 A_SetScale(1.5, 2.0)
        DBR1 V 1 A_SpawnItemEx("MoonBreakerFX3", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
		DBR1 U 0 A_SetScale(1.0, 2.0)
        DBR1 U 1 A_SpawnItemEx("MoonBreakerFX2", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
		DBR1 V 0 A_SetScale(0.5, 2.0)
        DBR1 V 1 A_SpawnItemEx("MoonBreakerFX1", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
        stop
    Death:
        TNT1 A 0
        stop
    }
}

actor MoonBreakerBase : DawnBreakerBase
{
    -FLOORHUGGER
    +CLIENTSIDEONLY
    States
    {
    Spawn:
        MMFX E 0
        MMFX E 0 A_SetPitch(pitch-1)
        MMFX E 0 A_JumpIf(ceilingz-z < 64 || pitch < 2, "FrameEnd")
        MMFX E 1 A_JumpIf(true, "Continue")
        wait
    }
}

actor MoonBreakerFX1 : DawnBreakerFX1
{
	XScale 0.5
	YScale 2.0
    States
    {
    Continue:
        DBR1 X 0 A_SpawnItemEx("MoonBreakerFX1", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
    Frame:
        DBR1 X 1
        stop
    FrameEnd:
        DBR1 Z 1
        stop
    }
}

actor MoonBreakerFX2 : DawnBreakerFX2
{
	XScale 1.0
	YScale 2.5
    States
    {
    Continue:
        DBR1 W 0 A_SpawnItemEx("MoonBreakerFX2", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
    Frame:
        DBR1 W 1
        stop
    FrameEnd:
        DBR1 Y 1
        stop
    }
}

actor MoonBreakerFX3 : DawnBreakerFX3
{
	XScale 1.5
	YScale 2.5
    States
    {
    Continue:
        DBR1 X 0 A_SpawnItemEx("MoonBreakerFX3", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
    Frame:
        DBR1 X 1
        stop
    FrameEnd:
        DBR1 Z 1
        stop
    }
}

actor MoonBreakerFX4 : DawnBreakerFX4
{
    States
    {
    Continue:
        DBR1 W 0 A_SpawnItemEx("MoonBreakerFX4", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
    Frame:
        DBR1 W 1
        stop
    FrameEnd:
        DBR1 Y 1
        stop
    }
}

actor MoonBreakerFX5 : DawnBreakerFX5
{
    States
    {
    Continue:
        DBR1 X 0 A_SpawnItemEx("MoonBreakerFX5", -momx, -momy, 32, momx, momy, 0, 0, SXF_TRANSFERTRANSLATION|SXF_ABSOLUTEMOMENTUM|SXF_ABSOLUTEPOSITION|SXF_TRANSFERPITCH)
    Frame:
        DBR1 X 1
        stop
    FrameEnd:
        DBR1 Z 1
        stop
    }
}

actor NYDFXSpawner2 : NYDFXSpawner
{
Speed 300
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_CustomMissile("NYDEnergyFX2",0,0,0,0)
stop
}
}

actor NYDEnergyFX2 : NYDEnergyFX
{
speed 20
reactiontime 21
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_SetScale(frandom(0.5,1.5))
loopit:
RDV1 J 1 A_JumpIfCloser(32,"Death")
RDV1 J 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor RaDevilRaMoonUlt : RaThorRaMoonUlt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
RAMR A 0 A_SetUserVar("user_z",400)
TNT1 A 3 A_SetUserVar("user_z",400)
TNT1 A 0 A_Jump(256,"Spawn2")
goto Spawn2
}
}

actor NYDEyeFlash : BasicClientSide
{
translation "192:192=42:42", "198:198=44:44"
States
{
Spawn:
TNT1 A 0
DBR1 N 0 A_PlaySoundEx("weapons/mmk/dawnbreakerwindup2", "Body")
DBR1 NOPQRST 3
stop
}
}